home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / DiskUtil / CD-ROM / Ami-CDRom / src / hfs.h < prev    next >
Text File  |  1994-11-03  |  3KB  |  152 lines

  1. /* hfs.h: */
  2.  
  3. typedef struct ext_descr {
  4.   t_ushort    StABN;
  5.   t_ushort    NumABlks;
  6. } t_ext_descr;
  7.  
  8. typedef t_ext_descr t_extdatarec[3];
  9.  
  10. typedef struct mdb {
  11.   t_ushort    SigWord;
  12.   t_ulong    CrDate;
  13.   t_ulong    LsMod;
  14.   t_ushort    Atrb;
  15.   t_ushort    NmFls;
  16.   t_ushort    VBMSt;
  17.   t_ushort    AllocPtr;
  18.   t_ushort    NmAlBlks;
  19.   t_ulong    AlBlkSiz;
  20.   t_ulong    ClpSiz;
  21.   t_ushort    AlBlSt;
  22.   t_ulong    NxtCNID;
  23.   t_ushort    FreeBks;
  24.   t_uchar    VolNameLen;
  25.   t_uchar    VolName[27];
  26.   t_ulong    VolBkUp;
  27.   t_ushort    VSeqNum;
  28.   t_ulong    WrCnt;
  29.   t_ulong    XTClpSiz;
  30.   t_ulong    CTClpSiz;
  31.   t_ushort    NmRtDirs;
  32.   t_ulong    FilCnt;
  33.   t_ulong    DirCnt;
  34.   t_ulong    FndrInfo[8];
  35.   t_ushort    VCSize;
  36.   t_ushort    VBMCSize;
  37.   t_ushort    CtlCSize;
  38.   t_ulong    XTFlSize;
  39.   t_extdatarec    XTExtRec;
  40.   t_ulong    CTFlSize;
  41.   t_extdatarec    CTExtRec;
  42. } t_mdb;
  43.  
  44. typedef struct node_descr {
  45.   t_ulong    FLink;
  46.   t_ulong    BLink;
  47.   t_uchar    Type;
  48.   t_uchar    NHeight;
  49.   t_ushort    NRecs;
  50.   t_ushort    Reserved;    
  51. } t_node_descr;
  52.  
  53. typedef struct hdr_node {
  54.   t_node_descr    node_descr;
  55.   t_ushort    Depth;
  56.   t_ulong    Root;
  57.   t_ulong    NRecs;
  58.   t_ulong    FNode;
  59.   t_ulong    LNode;
  60.   t_ushort    NodeSize;
  61.   t_ushort    KeyLen;
  62.   t_ulong    NNodes;
  63.   t_ulong    Free;
  64. } t_hdr_node;
  65.  
  66. typedef struct idx_record {
  67.   char        length;    /* always 0x25 */
  68.   char        reserved;
  69.   t_ulong    parent_id;
  70.   t_uchar    name_length;
  71.   char        name[31];
  72.   t_ulong    pointer;
  73. } t_idx_record;
  74.  
  75. typedef struct leaf_record {
  76.   char        length;
  77.   char        reserved;
  78.   t_ulong    parent_id;
  79.   t_uchar    name_length;
  80.   char        name[1];
  81. } t_leaf_record;
  82.  
  83. typedef struct dir_record {
  84.   char        type;
  85.   char        reserved;
  86.   t_ushort    Flags;
  87.   t_ushort    Val;
  88.   t_ulong    DirID;
  89.   t_ulong    CrDat;
  90.   t_ulong    MdDat;
  91.   t_ulong    BkDat;
  92. } t_dir_record;
  93.  
  94. typedef struct file_record {
  95.   char        type;
  96.   char        reserved;
  97.   char        Flags;
  98.   char        Typ;
  99.   char        FInfo[16];
  100.   t_ulong    FlNum;
  101.   t_ushort    StBlk;
  102.   t_ulong    LgLen;
  103.   t_ulong    PyLen;
  104.   t_ushort    RStBlk;
  105.   t_ulong    RLgLen;
  106.   t_ulong    RPyLen;
  107.   t_ulong    CrDat;
  108.   t_ulong    MdDat;
  109.   t_ulong    BkDat;
  110.   char        FXInfo[16];
  111.   t_ushort    ClpSize;
  112.   t_extdatarec    ExtRec;
  113.   t_extdatarec    RExtRec;
  114.   t_ulong    Resrv;
  115. } t_file_record;
  116.  
  117. typedef struct dir_thread_record {
  118.   char        type;
  119.   char        reserved;
  120.   t_ulong    Resrv[2];
  121.   t_ulong    ParID;
  122.   t_uchar    CNameLen;
  123.   t_uchar    CName[31];
  124. } t_dir_thread_record;
  125.  
  126. typedef struct file_thread_record {
  127.   char        type;
  128.   char        reserved;
  129.   t_ulong    Resrv[2];
  130.   t_ulong    ParID;
  131.   t_uchar    CNameLen;
  132.   t_uchar    CName[31];
  133. } t_file_thread_record;
  134.  
  135. typedef union catalog_record {
  136.   t_dir_record        d;
  137.   t_file_record        f;
  138.   t_dir_thread_record    dt;
  139.   t_file_thread_record    ft;
  140. } t_catalog_record;
  141.  
  142. int HFS_Find_Master_Directory_Block (CDROM *p_cd, t_mdb *p_mdb);
  143. t_bool Uses_HFS_Protocol (CDROM *p_cd, int *p_skip);
  144. t_bool HFS_Get_Header_Node (CDROM *p_cd, t_ulong p_mdb_pos,
  145.                 t_mdb *p_mdb, t_hdr_node *p_hdr_node);
  146. t_node_descr *HFS_Get_Node (CDROM *p_cd, t_ulong p_mdb_pos, t_mdb *p_mdb,
  147.                 t_ulong p_node);
  148. void Convert_Mac_Characters (char *p_buf, int p_buf_len);
  149.  
  150. t_bool HFS_Init_Vol_Info (VOLUME *p_volume, int p_start_block);
  151.  
  152.